import java.lang.reflect.Field;

/**
 * @Description: 通配符
 * @Author Stark
 * @Date 2022/3/27 23:12
 **/
public class Message <T extends Number>{
    private T msg;

    public T getMsg() {
        return msg;
    }

    public void setMsg(T msg) {
        this.msg = msg;
    }

    public static void main(String[] args) throws NoSuchFieldException {
//        Message<String> msg1 = new Message<>();
//        msg1.setMsg("String类型");
//        fun(msg1);
//        Message<Integer> msg2 = new Message<>();
//        msg2.setMsg(100);
//        fun(msg2);
//        Message<Double> msg3 = new Message<>();
//        msg3.setMsg(10.0);
//        fun(msg3);

        //Message<String> msg = new Message<>();
        Message<Integer> msg1 = new Message<>();
        Message<Double> msg2 = new Message<>();
        //Field field = msg.getClass().getDeclaredField("msg");
        Field field1 = msg1.getClass().getDeclaredField("msg");
        Field field2 = msg2.getClass().getDeclaredField("msg");
        //System.out.println(field.getType());
        System.out.println(field1.getType());
        System.out.println(field2.getType());
    }
//    public static void fun(Message<? super String> msg){
//        System.out.println(msg.getMsg());
//    }
}
